﻿using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;

namespace Modules.Goto.Runtime
{
    public class GotoKey : MonoBehaviour
    {
        // 结束回调函数 -组件绑定对象一旦 销毁或者隐藏直接认为跳转结束
        private LuaFunction onCompleted;
        private int gotoId = -1;
        // 跳转组件键值 每一个界面上对应按钮唯一标识 由策划维护在跳转表
        [Tooltip("跳转组件键值 策划维护在跳转表")]
        public string gotoKey;
        [Tooltip("如果按钮需要拆分 设置的按钮组件对象")]
        public GameObject button;
        [Tooltip("如果按钮需要拆分 设置的区域组件对象")]
        public GameObject area;
        [Tooltip("如果按钮点击后需要等待协议返回 需要设置")]
        public string responseKey;
        [Tooltip("如果目标是UI组件并且会被动画控制 需要预先保存位置")]
        public Vector3 targetPos;
        [Tooltip("强引导点击触发广播")]
        public string clickEvent;
        [Tooltip("强引导点击触发广播参数")]
        public string clickParams;
        [Tooltip("引导内城事件id")]
        public int cityEventId = 0;

        public void SetLuaCompletedFUnc(LuaFunction func,int gotoId)
        {
            onCompleted = func;
            this.gotoId = gotoId;
        }

        private void OnDestroy()
        {
            if (gotoId > 0)
            { 
                onCompleted?.Action(gotoId);
            }
        }
   
        private void OnDisable()
        {
            if (gotoId > 0)
            {
                try
                {
                    onCompleted?.Action(gotoId);
                }
                catch (Exception e)
                {
                    Debug.LogError("gotoKet回调报错 id: " + gotoId);
                }
            }
        }

        private void OnBecameInvisible()
        {
            if (gotoId > 0)
            {
                onCompleted?.Action(gotoId);
            }
        }
    }
}

